/**************************************************************************************************
* Title: SumBoundingCylinder.h
* Author: Gael Huber
* Description: A bounding cylinder
**************************************************************************************************/
#ifndef __SUMBOUNDINGCYLINDER_H__
#define __SUMBOUNDINGCYLINDER_H__

#include "SumMath.h"

class BoundingCylinder {
public:
	// Constructors and destructors
	BoundingCylinder(void);
	BoundingCylinder(const Vector3_16f& p, const Vector3_16f& a, float r, float h);
	BoundingCylinder(const BoundingCylinder& rhs);
	~BoundingCylinder(void);

	// Assignment operator
	BoundingCylinder& operator=(const BoundingCylinder& rhs);

	// Equivalence operators
	bool operator==(const BoundingCylinder& rhs);
	bool operator!=(const BoundingCylinder& rhs);

	// Accessors
	Vector3_16f& position(void);
	const Vector3_16f& position(void) const;
	Vector3_16f& axis(void);
	const Vector3_16f& axis(void) const;
	float radius(void);
	float radius(void) const;
	float height(void);
	float height(void) const;

private:
	// Position vector
	Vector3_16f _position;

	// Axis direction
	Vector3_16f _axis;

	// Radius
	float _radius;

	// Height
	float _height;
};

#endif